<html>
<head><meta charset="utf-8"><title>futures-core 1.0.0 / futures 0.4.0 · wg-async-foundations · Zulip Chat Archive</title></head>
<h2>Stream: <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/index.html">wg-async-foundations</a></h2>
<h3>Topic: <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/futures-core.201.2E0.2E0.20.2F.20futures.200.2E4.2E0.html">futures-core 1.0.0 / futures 0.4.0</a></h3>

<hr>

<base href="https://rust-lang.zulipchat.com">

<head><link href="https://rust-lang.github.io/zulip_archive/style.css" rel="stylesheet"></head>

<a name="226533692"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/futures-core%201.0.0%20/%20futures%200.4.0/near/226533692" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Yoshua Wuyts <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/futures-core.201.2E0.2E0.20.2F.20futures.200.2E4.2E0.html#226533692">(Feb 16 2021 at 16:08)</a>:</h4>
<p>Hey all; <span class="user-mention" data-user-id="213313">@Taiki Endo</span> opened a PR proposing <code>futures-core</code> 1.0.0 and opening up the <code>0.4.0</code> merge window for all other <code>futures</code> crates: <a href="https://github.com/rust-lang/futures-rs/pull/2335">https://github.com/rust-lang/futures-rs/pull/2335</a>. Figured I'd open up a stream on it here</p>



<a name="226534177"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/futures-core%201.0.0%20/%20futures%200.4.0/near/226534177" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Yoshua Wuyts <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/futures-core.201.2E0.2E0.20.2F.20futures.200.2E4.2E0.html#226534177">(Feb 16 2021 at 16:10)</a>:</h4>
<p>One thing which I'm somewhat worried about is a <code>0.4.0</code> version of <code>futures-io</code> -- as <code>async-std</code> we'd want to upgrade to that when it's released, which would require a semver major from our side. There currently don't appear to be any breaking changes planned for it, so if we could avoid breakage that'd be preferable. But at the least it seems something we should make a conscious decision on.</p>



<a name="226534461"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/futures-core%201.0.0%20/%20futures%200.4.0/near/226534461" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Yoshua Wuyts <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/futures-core.201.2E0.2E0.20.2F.20futures.200.2E4.2E0.html#226534461">(Feb 16 2021 at 16:12)</a>:</h4>
<p>I guess I feel that <code>futures-io</code>, like <code>futures-core</code> is in a unique position where they are the glue which hold the ecosystem together. And changes to them are different from all other crates. So we should coordinate this clearly.</p>



<a name="226602955"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/futures-core%201.0.0%20/%20futures%200.4.0/near/226602955" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Taiki Endo <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/futures-core.201.2E0.2E0.20.2F.20futures.200.2E4.2E0.html#226602955">(Feb 17 2021 at 01:29)</a>:</h4>
<p>Even if we don't bump futures-io, many crates also depend on stream, so async-std and others need major version bump anyway.</p>



<a name="226962848"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/futures-core%201.0.0%20/%20futures%200.4.0/near/226962848" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Yoshua Wuyts <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/futures-core.201.2E0.2E0.20.2F.20futures.200.2E4.2E0.html#226962848">(Feb 19 2021 at 13:31)</a>:</h4>
<p>I feel like we haven't done due diligence yet on motivating breaking changes, and seeking alternatives. I wrote about it here: <a href="https://github.com/rust-lang/futures-rs/pull/2335#issuecomment-782075668">https://github.com/rust-lang/futures-rs/pull/2335#issuecomment-782075668</a></p>
<p>-- this does not mean we can't or shouldn't issue breaking changes to core async traits. But given the breadth of breakage those changes would carry I think they should be <em>extremely</em> well motivated.</p>



<a name="227163716"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/futures-core%201.0.0%20/%20futures%200.4.0/near/227163716" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Taiki Endo <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/futures-core.201.2E0.2E0.20.2F.20futures.200.2E4.2E0.html#227163716">(Feb 21 2021 at 12:10)</a>:</h4>
<p><span class="user-mention" data-user-id="211722">@Yoshua Wuyts</span> </p>
<blockquote>
<p><strong>I'm still missing clear motivation for _why_ we're seeking to publish a breaking release of <code>futures-core</code> and <code>futures-io</code></strong>.</p>
</blockquote>
<p>With the release of <code>futures-core</code> as 1.0, many crates with major versions greater than 1 will be able to depend on futures-core in their public API. This is very important for Rust's async ecosystem.</p>
<blockquote>
<p>Failure to do so would adversely affect Rust's reputation of being reliable and hurt adoption.</p>
</blockquote>
<p><strong><code>futures</code> followed <a href="https://semver.org/spec/v2.0.0.html">Semantic Versioning</a>, <a href="https://rust-lang.github.io/api-guidelines/necessities.html#public-dependencies-of-a-stable-crate-are-stable-c-stable">API guidelines</a>, and <a href="https://github.com/rust-lang/rfcs/blob/master/text/1105-api-evolution.md">RFC1105</a> correctly and released crates as 0.x.</strong><br>
I know some crates with major versions greater than 1 depend on futures-core in public APIs. (<a href="https://github.com/async-rs/async-std/issues/959">https://github.com/async-rs/async-std/issues/959</a>)<br>
However, <strong>the problem is their API guideline violations and I am convinced that your claim that "futures's responsible" is wrong.</strong></p>
<p>I always want to minimize ecosystem breakage as much as possible, but after reading your claim, I'm thinking of giving up my efforts on it. Taking responsibility for the stability guarantee of a crate that violates the Semantic Versioning and the API guidelines is not what I hoped.</p>
<p><em>Also I'm very disappointed that you used the word "Rust's reputation" to shift responsibility for the problem of "async-std violates API guidelines".</em></p>



<hr><p>Last updated: Aug 07 2021 at 22:04 UTC</p>
</html>